#!/usr/bin/env python
# lambda方法操作
y = lambda x:x if x <= 1 else y(x-1)+y(x-2)
print(y(10))   # 其中10为下标，从0开始

# 把斐波那契数列写入到列表
def fib(n):
    m = [1,1]
    for i in range(2,n):
        m.append(m[-1]+m[-2])
    return m[:n]  # 返回列表的值
#运行
res = fib(10)    
print(res)

# 递归的方法
def fib(n):
    if n <= 1:
        return n
    else:
        return fib(n-1) + fib(n-2)
if __name__ == '__main__':
    n=int(input('pls input your number:'))
    ret = fib(n)
    print(ret)

# 函数方式
def fib(n):
    a, b = 1,1
    m = 0
    while m < n:
        ret = a
        a,b = b, a+b
        print(ret)
ret = fib(10)
# 生成器的方法
def fib(n):
    a,b = 1,1
    m = 0
    while m < n:
        ret = a
        a,b = b,a+b
        yield ret   # 节约内存
        m += 1
ret = fib(10)
print(ret.__next__())  #方法一：只打印一个
for i in ret:    #方法二：全部打印出来 
    print(i)
